from operator import truediv

print(2 * 3 + 5)
######
print(2 / 3)
print(2 / 3 + 1)
#浮点数无法精确保存
print((67.5 + 89.0 + 12.9 + 32.2) / 4)
print('8888888888888')
print("大")
###
ave = (4 / 2)
result = ave / 2
print(result)
#####
a = 2
b = a ** 2  #**2==平方
print(b)
######
print("大")
print('撒')
######
a = 100
print(type(a))
bh = 'da'
bc = '大'
print(type(bh))
print(type(bc))
dd = 1.0
print(type(dd))
####
a = 10  #初始化
b = a
print(b)
a = 30  #赋值
print(b)
print(a)
######

###python里边int表示范围是无穷的，int可以自动扩容，所以就没有longlong short byte 之类的
##python float==double 小数点15位，没有double这个类型了就

###
##python里边' '==" "  里边可以放数字 字母 标点 汉字符号 汉字
##同一个引号不能连续嵌套
#ch='my name is  'ava'  ' 不行
ch = 'my name is "saasa" '#这样可以
print(ch)
ph = "my name is 'saasa' "
print(ph)

rh=''' my 'name' is "sdadaddsdsdsa"  ''' # 三引号
print(rh)

######

a='asasasa'
print(len(a))### len可以求字符串长度

rh='''   my   'name'   is      "sdadaddsdsdsa"  “a”  '''
print(len(rh))


######
a='hello '
b="world"
c=a+b
print(c)##字符串可以拼接
##不能把数字和字符串混合,但是可以加数字字符
a='01'
b="ewe"
print(a+b)

#####类型
##a=true 必须大写
a=True
b=False
print(type(a))
print(type(b))
#除了上述类型之外, Python 中还有 list, tuple, dict, 自定义类型 等等. 我们后续再介绍.

"""
(1) 类型决定了数据在内存中占据多大空间.
#int 4个动态扩容
float 固定 8个
bool一个字节
string 可以变长

(2) 类型其实约定了能对这个变量做什么样的操作.
例如 int / float 类型的变量, 可以进行 + - * / 等操作，不能使用 len
而 str 类型的变量, 只能进行 + (并且行为是字符串拼接), 不能进行 - * / , 但是还能使用 len 等其他操作.
总结: 类型系统其实是在对变量进行 "归类". 相同类型的变量(数据) 往往具有类似的特性和使用规则.
"""

#####在 Python 中, 一个变量是什么类型, 是可以在 "程序运行" 过程中发生变化的. 这个特性称为 "动态类型" .
a = 10
print(type(a))
a = 'hello'
print(type(a))

#C++/Java 这样的语言则不允许这样的操作. 一个变量定义后类型就是固定的了. 这种特性则称为 "静态类型"
"""
动态类型特性是一把双刃剑. 
对于中小型程序, 可以大大的解约代码量(比如写一段代码就可以同时支持多种类型). 
对于大型程序, 则提高了模块之间的交互成本. (程序猿 A 提供的代码难以被 B 理解).
"""
#虽然动态，但是可以初始化类型的
print('$$$$$$$')
a:int= 10
print(type(a))
a:str= 10
print(type(a))
a:str = 'hello'
print(type(a))

######

"""
Python 中有两种风格的注释. 
(1) 注释行
使用 # 开头的行都是注释. 
(2) 文档字符串
使用三引号引起来的称为 "文档字符串", 也可以视为是一种注释. 
可以包含多行内容, 
一般放在 文件/函数/类 的开头. 
 """ ##### ''' 均可 (等价)

###########

print("$$$$$$$")
print('hello')
a = 10
print(a)
b = True
print(b)

a=10
print(f'a={a}')
print(f"a={a}")

# 使用 f 作为前缀的字符串, 称为 f-string
# 里面可以使用 { } 来内嵌一个其他的变量/表达式.
print(f"a={a+10}")

##########

num=input()
print(num)



num1=input('输入一个数')
print(f'你输入了{num1}')

#空格也可以自动读取
num1=input('输入一个数')
print(f"你输入了   {num1}")

print(type(num1))#默认是字符串类型

num1=input('输入第一个数')
num2=input('输入第二个数')
print(f"你  {num1+num2}")#默认是字符串类型，打印会把输入的字符串拼接起来


a = input('请输入第一个整数: ')
b = input('请输入第二个整数: ')
a = int(a)
b = int(b)
print(f'a + b = {a + b}')#这样转换成整形再相加就对了
print(type(a))

# 通过 int( ) 把变量转成了 int 类型.
# 类似的, 使用 float( ), bool( ), str( ) 等可以完成对应的类型转换

#输入 4 个小数, 求 4 个小数的平均值
# a = input('请输入第一个数字: ')
# b = input('请输入第二个数字: ')
# c = input('请输入第三个数字: ')
# d = input('请输入第四个数字: ')
# a = float(a)
# b = float(b)
# c = float(c)
# d = float(d)
# avg = (a + b + c + d) / 4
# print(f'平均值: {avg}')


########

#先乘方后乘除最后加减，想改变就加括号
print(1+2*3)
print((1+2)*3)

# 注意1: / 中不能用 0 作为除数. 否则会 抛出异常
# 异常 是编程语言中的一种常见机制, 表示程序运行过程中, 出现了一些 "意外情况", 导致程序不能继# 续往下执行了

# print(10/0)
# print(10/0.0)
# 都是异常


# 注意2: 整数 / 整数 结果能是小数. 小数不会截断

print(2/3)

# 注意3: % 不是 "百分数", 而是求余数.

print(7%2)

# 注意4: ** 是求乘方. 不光能算整数次方, 还能算小数次方
print(4**2)
print(4**0.5)#根号2


# 注意5: // 是取整除法(也叫地板除). 整数除以整数, 结果还是整数(舍弃小数部分, 并向下取整. 不是四舍五入)

print(7 // 2)#3
print(-7 // 2)#-4

print("d*****************")
##################################
###

# (1) 如果关系符合, 则表达式返回 True. 如果关系不符合, 则表达式返回 False
a = 10
b = 20
print(a < b)
print(a <= b)
print(a > b)
print(a >= b)
print(a == b)
print(a != b)


# (2) 关系运算符不光针对整数/浮点数进行比较, 还能针对字符串进行比较.
a = 'hello'
b = 'world'
print(a < b)
print(a <= b)
print(a > b)
print(a >= b)
print(a == b)
print(a != b)
# 直接使用 == 或者 != 即可对字符串内容判定相等. (这一点和 C / Java 不同).
#c是 strcmp 直接==比较的是首元素地址

# 字符串比较大小, 规则是 "字典序

# a = '你好'
# b = ‘世界'
#对中文比较没意义，计算机里边中文都是用多个字节构成的一个比较大的数字



# (3) 对于浮点数来说, 不要使用 == 判定相等
































































